/**
给你一个二叉树，请你返回其按 层序遍历 得到的节点值。 （即逐层地，从左到右访问所有节点）。

 

示例：
二叉树：[3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回其层次遍历结果：

[
  [3],
  [9,20],
  [15,7]
]

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/binary-tree-level-order-traversal
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
思路: bfs 使用队列
*/
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) [][]int {
    if root == nil{
        return [][]int{}
    }
    q,res := []*TreeNode{root},make([][]int,0)
    for len(q) != 0{
        tmp,n := make([]int,0),len(q)
        for i:=0;i<n;i++{
            node := q[0]
            q = q[1:]
            tmp = append(tmp,node.Val)
            if node.Left != nil{
                q = append(q,node.Left)
            }
            if node.Right != nil{
                q = append(q,node.Right)
            }
        }
        res = append(res,tmp)    
    }
    return res
}